package com.example.xd.mvp_project.utils;

import android.content.Context;
import android.telephony.TelephonyManager;

import com.code19.library.SPUtils;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import static com.example.xd.mvp_project.comment.Constans.ISDOUBLE;
import static com.example.xd.mvp_project.comment.Constans.SIMCARD;
import static com.example.xd.mvp_project.comment.Constans.SIMCARD_1;
import static com.example.xd.mvp_project.comment.Constans.SIMCARD_2;

/**
 * @auther XuDan on 2018/10/23.
 */
public class IsDoubleCardUtils {

    public static void initIsDoubleTelephone(Context context) {
        boolean isDouble = true;
        Method method = null;
        Object result_0 = null;
        Object result_1 = null;
        TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        try {
//只要在反射getSimStateGemini 这个函数时报了错就是单卡手机（这是我自己的经验，不一定全正确）
            method = TelephonyManager.class.getMethod("getSimStateGemini", new Class[]{int.class});
//获取SIM卡1
            result_0 = method.invoke(tm, new Object[]{new Integer(0)});
//获取SIM卡1
            result_1 = method.invoke(tm, new Object[]{new Integer(1)});
        } catch (SecurityException e) {
            isDouble = false;
            e.printStackTrace();
//System.out.println("1_ISSINGLETELEPHONE:"+e.toString());
        } catch (NoSuchMethodException e) {
            isDouble = false;
            e.printStackTrace();
//System.out.println("2_ISSINGLETELEPHONE:"+e.toString());
        } catch (IllegalArgumentException e) {
            isDouble = false;
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            isDouble = false;
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            isDouble = false;
            e.printStackTrace();
        } catch (Exception e) {
            isDouble = false;
            e.printStackTrace();
//System.out.println("3_ISSINGLETELEPHONE:"+e.toString());
        }
        if (isDouble) {
//保存为双卡手机
            SpUtils.putBoolean(context, ISDOUBLE, true);
//保存双卡是否可用
//如下判断哪个卡可用.双卡都可以用
            if (result_0.toString().equals("5") && result_1.toString().equals("5")) {
                if (!SpUtils.getString(context, SIMCARD, "2").equals("0") && !SpUtils.getString(context, SIMCARD, "2").equals("1")) {
                    SpUtils.putString(context, SIMCARD, "0");
                }
                SpUtils.putBoolean(context, SIMCARD_1, true);
                SpUtils.putBoolean(context, SIMCARD_2, true);
            } else if (!result_0.toString().equals("5") && result_1.toString().equals("5")) {//卡二可用
                if (!SpUtils.getString(context, SIMCARD, "2").equals("0") && !SpUtils.getString(context, SIMCARD, "2").equals("1")) {
                    SpUtils.putString(context, SIMCARD, "1");
                }
                SpUtils.putBoolean(context, SIMCARD_1, false);
                SpUtils.putBoolean(context, SIMCARD_2, true);
            } else if (result_0.toString().equals("5") && !result_1.toString().equals("5")) {//卡一可用
                if (!SpUtils.getString(context, SIMCARD, "2").equals("0") && !SpUtils.getString(context, SIMCARD, "2").equals("1")) {
                    SpUtils.putString(context, SIMCARD, "0");
                }
                SpUtils.putBoolean(context, SIMCARD_1, true);
                SpUtils.putBoolean(context, SIMCARD_2, false);
            } else {//两个卡都不可用(飞行模式会出现这种种情况)
                SpUtils.putBoolean(context, SIMCARD_1, false);
                SpUtils.putBoolean(context, SIMCARD_2, false);
            }
        } else {
//保存为单卡手机
            SpUtils.putString(context, SIMCARD, "0");
            SpUtils.putBoolean(context, ISDOUBLE, false);
        }
    }

}
